package core

import (
	"fmt"
	"your-project-name/global"
	"your-project-name/initialize"
)

type server interface {
	ListenAndServe() error
}

func Run() {
	global.VIPER = Viper()       // 初始化Viper
	global.ZAP_LOG = Zap()       // 初始化zap日志库
	global.GORM_DB = initialize.Gorm() // gorm连接数据库
	initialize.Timer() //定时清除数据库表中的日志信息
	if global.GORM_DB != nil {
		initialize.MysqlTables(global.GORM_DB) // 初始化表
		// 程序结束前关闭数据库链接
		db, _ := global.GORM_DB.DB()
		defer db.Close()
	}

	if global.CONFIG.System.UseMultipoint {
		// 初始化redis服务
		initialize.Redis()
	}

	//初始化路由
	Router := initialize.Routers()
	Router.Static("/form-generator", "./resource/page")

	//启动服务
	address := fmt.Sprintf(":%d", global.CONFIG.System.Addr)
	server := initServer(address, Router)
	global.ZAP_LOG.Error(server.ListenAndServe().Error())
}
